package concurrent

import (
	"fmt"
	"sync"
)

/**
  Mutex实现互斥锁
*/

var lock sync.Mutex
var i int = 100

func add() {
	// 对共享变量加锁
	lock.Lock()
	i += 10
	// 释放对象锁
	lock.Unlock()

	fmt.Printf("i++: %v\n", i)
}

func sub() {
	lock.Lock()
	i -= 10
	lock.Unlock()
	fmt.Printf("i--: %v\n", i)
}

func main2() {
	for i := 0; i < 10; i++ {
		// 并发操作
		go add()
		go sub()
	}
	fmt.Printf("\"end\": end\t ;  i: %v\n", i)
}
